/*
 *4编写一个Stack的用例Parentheses，从标准输入中读取一个文本流并使用栈判定其中的括 号是否配对完整。例如，对于 [ ( ) ] { } 
 *{ [ ( ) ( ) ] ( ) } 程序应该打印t ru e，对于 [ ( ] ) 则打印 fa ls e 0
 */
#include<iostream>
#include<stack>
#include<string>
using namespace std;
string isMatched(const string &str)
{
    stack<char> tmp;
    for(auto s:str)
    {
        switch(s)
        {
            case ')'://匹配
                if(tmp.top()=='(')
                    tmp.pop();
                else
                {
                    return "false";
                }
                break;
            case ']':
                if(tmp.top()=='[')
                    tmp.pop();
                else
                {
                    return "false";
                }
                break;
            case '}':
                if(tmp.top()=='{')
                    tmp.pop();
                else
                {
                    return "false";
                }
                break;
            default://之前的字符
                tmp.push(s);
                break;
        }    
    }
     return tmp.empty()?"true":"false";
}

int main()
{
    string s;
    cin>>s;
    cout<<isMatched(s)<<endl;
    return 0;
}
